#include <stdio.h>
#include <stdlib.h>

/* 链表节点结构体 */
typedef struct ListNode{
    int val; // 节点值
    struct ListNode *next; // 指向下一节点的指针
}ListNode;

    /* 构造函数 */
ListNode *newListNode(int val) {
    ListNode *node;
    node = (ListNode *) malloc(sizeof(ListNode));
    if (node == NULL) {
    // 处理内存分配失败的情况
        printf("分配失败。\n");
    }
    else {
        printf("分配成功。\n");
    }
    node->val = val;
    node->next = NULL;
    return node;
}

int main(){
    /* 初始化链表 1 -> 3 -> 2 -> 5 -> 4 */
    // 初始化各个节点
    ListNode *n0 = newListNode(1);
    ListNode *n1 = newListNode(3);
    ListNode *n2 = newListNode(2);
    ListNode *n3 = newListNode(5);
    ListNode *n4 = newListNode(4);
    // 构建节点之间的引用
    n0->next = n1;
    n1->next = n2;
    n2->next = n3;
    n3->next = n4;
    return 0;
}


void removeItem(ListNode *n0){
    if (!n0->next)
        return;
    // n0 -> P -> n1
    ListNode *P = n0->next;
    ListNode *n1 = P->next;
    n0->next = n1;
    // 释放内存
    free(P);
}

